next up previous
Next: 4.1 Making Current to Up: System Support for Previous: 3.3 Per Window Double

4 Virtualizing SGI Graphics

When an OpenGL process creates a direct OpenGL rendering context, the process opens the graphics device. The process allocates an IRIX kernel resource known as a rendering node. A rendering node is a virtual graphics hardware context and permits the graphics pipe to be mapped into or ``attached to'' the process's address space so a process can directly access the graphics hardware. Every direct rendering OpenGL context has an associated rendering node. Note that rendering nodes are completely hidden from OpenGL programs. The allocation and use of rendering nodes is purposefully not made available for use by applications. They exist only to support implementing the OpenGL and IRIS GL APIs.

The SGI X server [9] also uses a rendering node to access the graphics pipe. But the X server's rendering node is marked as being the board manager rendering node. The board manager rendering node is allowed to call a number of special board manager ioctls used for validating and invalidating resources associated with other rendering nodes. By acting as the board manager, the X server must process messages sent by the kernel indicating the needs of rendering nodes to have their virtual graphics resources validated. The X server receives the messages through a shared memory input queue (or shmiq) also used by the kernel to efficiently pass input device events to the X server. The purpose of the kernel messages and how the X server responds to them are discussed shortly. The X server also uses its rendering node for standard X server rendering.





mjk@sgi.com